package math;

public class _02Nim游戏 {
    /**
     * 有若干堆石头，第i堆石头有i个，两个人交替拿石头。每次可以拿完其中一堆或
     * 任意石头，A先手，谁先拿完谁赢
     * 假设两人都采用最优策略，谁会取得胜利
     * 将几个数字都变成二进制，分别对每一位进行异或
     * 先手面临非0的情况就赢，因为他可以变成0
     * 面对0的情况就输，因为对方可以把他变为非0
     */
    public static void main(String[] args) {
        int[] A = {3,4,5};
        boolean res = solve(A);
        System.out.println(res);
    }

    static boolean solve(int[] A) {
        int res = 0;
        for (int i = 0; i < A.length; i++) {
            res ^= A[i];
            // System.out.println(Integer.toBinaryString(A[i]));
        }
        return res != 0;
    }
}
